-- -----------------------------------------------------
-- Table TB_ESTADO
-- -----------------------------------------------------

CREATE TABLE TB_ESTADO(
  id_estado int NOT NULL unique,
  uf varchar(2) NOT NULL,
  nome varchar(20) NOT NULL,
  PRIMARY KEY  (id_estado)
)

GO
-- -----------------------------------------------------
-- Table TB_CIDADE
-- -----------------------------------------------------

CREATE TABLE TB_CIDADE (
  id_cidade int UNIQUE NOT NULL,
  id_estado int NOT NULL,
  uf varchar(2) NOT NULL,
  nome varchar(50) NOT NULL,
  PRIMARY KEY (id_cidade),
  FOREIGN KEY (id_estado)
		REFERENCES TB_ESTADO (id_estado)
)

GO
-- -----------------------------------------------------
-- Table TB_CLIENTE
-- -----------------------------------------------------

CREATE  TABLE TB_CLIENTE (
  id_cliente INT IDENTITY(1,1) NOT NULL,
  id_cidade int not null,
  nome VARCHAR(50) NOT NULL,
  cpf VARCHAR(50) NULL,
  data_nascimento DATE NULL,
  email VARCHAR(50) NULL,
  senha VARCHAR(50) NULL,
  telefone VARCHAR(50) NULL ,
  rua VARCHAR(50) NULL,
  numero VARCHAR(50) NOT NULL,
  bairro VARCHAR(50) NULL,
  cep VARCHAR(50) NULL,
  PRIMARY KEY (id_cliente), 
   FOREIGN KEY (id_cidade)
		REFERENCES TB_CIDADE (id_cidade)
)

GO
-- -----------------------------------------------------
-- Table TB_EMPRESA
-- -----------------------------------------------------

CREATE  TABLE TB_EMPRESA 
(
  id_empresa INT IDENTITY(1,1) NOT NULL,
  id_cidade int not null,
  nome VARCHAR(50) NOT NULL ,
  razao_social VARCHAR(50) NOT NULL ,
  cnpj VARCHAR(50) NOT NULL ,
  email VARCHAR(50) NOT NULL ,
  senha VARCHAR(50) NOT NULL ,
  telefone VARCHAR(50) NULL ,
  rua VARCHAR(50) NOT NULL ,
  numero VARCHAR(50) NOT NULL ,
  bairro VARCHAR(50) NOT NULL ,
  cep VARCHAR(50) NOT NULL ,
  PRIMARY KEY (id_empresa), 
  FOREIGN KEY (id_cidade)
		REFERENCES tb_cidade (id_cidade)
)

GO
-- -----------------------------------------------------
-- Table TB_CLIENTE_EMPRESA
-- -----------------------------------------------------

CREATE  TABLE TB_CLIENTE_EMPRESA (
  id_empresa INT NOT NULL ,
  id_cliente INT NOT NULL ,
  data_cadastro DATE NOT NULL ,
  PRIMARY KEY (id_empresa, id_cliente),
	FOREIGN KEY (id_empresa)
		REFERENCES TB_EMPRESA (id_empresa),
    FOREIGN KEY (id_cliente)
		REFERENCES TB_CLIENTE (id_cliente)
)

GO
-- -----------------------------------------------------
-- Table TB_STATUS
-- -----------------------------------------------------

CREATE  TABLE TB_STATUS (
  id_status INT IDENTITY(1,1) NOT NULL ,
  descricao VARCHAR(30) NOT NULL ,
  PRIMARY KEY (id_status)
)

GO
-- -----------------------------------------------------
-- Table TB_VENDA
-- -----------------------------------------------------

CREATE  TABLE TB_VENDA (
  id_venda INT IDENTITY(1,1) NOT NULL ,
  id_status INT NOT NULL ,
  id_cliente INT NOT NULL ,
  id_empresa INT NOT NULL ,
  data_venda DATE NOT NULL ,
  valor_total NUMERIC(10,2) NOT NULL ,
  PRIMARY KEY (id_venda),
   FOREIGN KEY (id_status)
    REFERENCES TB_STATUS (id_status),
   FOREIGN KEY (id_cliente)
    REFERENCES TB_CLIENTE (id_cliente),
   FOREIGN KEY (id_empresa)
    REFERENCES TB_EMPRESA (id_empresa)
)

GO
-- -----------------------------------------------------
-- Table TB_SEGMENTO
-- -----------------------------------------------------

CREATE  TABLE TB_SEGMENTO
(
  id_segmento INT IDENTITY(1,1) NOT NULL  ,
  id_empresa INT NOT NULL ,
  descricao VARCHAR(30) NOT NULL ,
  PRIMARY KEY (id_segmento),
    FOREIGN KEY (id_empresa)
  REFERENCES TB_EMPRESA (id_empresa)
)

GO
-- -----------------------------------------------------
-- Table TB_SUBPRODUTO
-- -----------------------------------------------------

CREATE  TABLE TB_SUBPRODUTO 
(
  id_subproduto INT IDENTITY(1,1) NOT NULL,
  id_empresa INT NOT NULL,
  descricao VARCHAR(50) NOT NULL,
  PRIMARY KEY (id_subproduto),
    FOREIGN KEY (id_empresa)
    REFERENCES TB_EMPRESA (id_empresa)
)

GO
-- -----------------------------------------------------
-- Table TB_PRODUTO
-- -----------------------------------------------------

CREATE  TABLE TB_PRODUTO 
(
  id_produto INT IDENTITY(1,1) NOT NULL ,
  id_empresa INT NOT NULL,
  id_subproduto INT NOT NULL,
  id_segmento INT NOT NULL,
  descricao VARCHAR(30) NOT NULL,
  valor NUMERIC(10,2) NOT NULL,
  PRIMARY KEY (id_produto),
  FOREIGN KEY (id_segmento)
    REFERENCES TB_SEGMENTO (id_segmento),
  FOREIGN KEY (id_subproduto)
    REFERENCES TB_SUBPRODUTO (id_subproduto),
  FOREIGN KEY (id_empresa)
    REFERENCES TB_EMPRESA (id_empresa )
)

GO
-- -----------------------------------------------------
-- Table TB_ITEM
-- -----------------------------------------------------

CREATE  TABLE TB_ITEM
(
  id_item INT IDENTITY(1,1) NOT NULL,
  id_venda INT NOT NULL,
  id_subProduto INT NOT NULL,
  id_produto INT NOT NULL,
  valor NUMERIC(10,2) NOT NULL,
  descricao VARCHAR(30) NOT NULL,
  quantidade INT NOT NULL ,
  PRIMARY KEY (id_item) ,
    FOREIGN KEY (id_venda )
   REFERENCES TB_VENDA (id_venda),
    FOREIGN KEY (id_produto  )
   REFERENCES TB_PRODUTO (id_produto)
)

GO
-- -----------------------------------------------------
-- Table TB_INGREDIENTE
-- -----------------------------------------------------

CREATE  TABLE TB_INGREDIENTE 
(
  id_ingrediente INT IDENTITY(1,1) NOT NULL ,
  id_empresa INT NOT NULL,
  descricao VARCHAR(50) NOT NULL,
  PRIMARY KEY (id_ingrediente),
    FOREIGN KEY (id_empresa)
    REFERENCES TB_EMPRESA (id_empresa)
)

GO
-- -----------------------------------------------------
-- Table TB_ITEM_INGREDIENTE
-- -----------------------------------------------------

CREATE  TABLE TB_ITEM_INGREDIENTE 
(
  id_item INT NOT NULL ,
  id_ingrediente INT NOT NULL ,
  IsAceito BIT NOT NULL ,
  PRIMARY KEY (id_item , id_ingrediente),
    FOREIGN KEY (id_ingrediente)
    REFERENCES TB_INGREDIENTE(id_ingrediente),
    FOREIGN KEY (id_item)
    REFERENCES TB_ITEM(id_item)
)

GO
-- -----------------------------------------------------
-- Table TB_PRODUTO_INGREDIENTE
-- -----------------------------------------------------

CREATE  TABLE TB_PRODUTO_INGREDIENTE 
(
  id_produto INT NOT NULL,
  id_ingrediente INT NOT NULL,
  isObrigatorio BIT NOT NULL,
  isOpicional BIT NOT NULL,
  PRIMARY KEY (id_produto, id_ingrediente),
    FOREIGN KEY (id_ingrediente )
		REFERENCES TB_INGREDIENTE (id_ingrediente),
    FOREIGN KEY (id_produto)
		REFERENCES TB_PRODUTO (id_produto)
)

-- -----------------------------------------------------
-- DROP Tables Lanchonete
-- -----------------------------------------------------

DROP TABLE TB_PRODUTO_INGREDIENTE
DROP TABLE TB_ITEM_INGREDIENTE 
DROP TABLE TB_CLIENTE_EMPRESA 
DROP TABLE TB_EMPRESA 
DROP TABLE TB_CLIENTE 
DROP TABLE TB_SEGMENTO
DROP TABLE TB_SUBPRODUTO 
DROP TABLE TB_PRODUTO
DROP TABLE TB_STATUS
DROP TABLE TB_ITEM
DROP TABLE TB_VENDA 
DROP TABLE TB_INGREDIENTE
DROP TABLE TB_CIDADE
DROP TABLE TB_ESTADO



